package domain

import (
	"github.com/hlhutu/gormplus"
	"ruoyi-go/internal/framework/db"
)

/**
 * 公告表 SysNotice
 */
type SysNotice struct {
	// 公告ID
	NoticeId int64 `json:"noticeId" gorm:"column:notice_id" form:"noticeId"`

	// 公告标题
	NoticeTitle string `json:"noticeTitle" gorm:"column:notice_title" form:"noticeTitle"`

	// 公告类型（1通知 2公告）
	NoticeType string `json:"noticeType" gorm:"column:notice_type" form:"noticeType"`

	// 公告内容
	NoticeContent string `json:"noticeContent" gorm:"column:notice_content" form:"noticeContent"`

	// 公告状态（0正常 1关闭）
	Status string `json:"status" gorm:"column:status" form:"status"`
}

// TableName 映射数据库表名
func (m SysNotice) TableName() string {
	return "sys_notice"
}

// SysNotice Model 定义
type sysNoticeModel struct {
	gormplus.Model[SysNotice] // 使用泛型封装基础操作
}

// SysNoticeModelInst 单例变量初始化
var sysNoticeModelInst *sysNoticeModel

// SysNoticeModel 获取 SysNotice 单例模型
func SysNoticeModel() *sysNoticeModel {
	if sysNoticeModelInst == nil {
		// 将 SysNotice 注册到 Gorm DB，并初始化
		sysNoticeModelInst = &sysNoticeModel{Model: gormplus.NewModel(SysNotice{}, db.GormDB)}
	}
	return sysNoticeModelInst
}
